package com.xjrsoft.module.customer.erp_model.customerManage.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.xjrsoft.core.tool.utils.StringUtil;
import com.xjrsoft.module.customer.erp_model.customerManage.entity.ErpInoutunit;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.xjrsoft.module.customer.erp_model.customerManage.entity.ErpInoutunitcontact;
import com.xjrsoft.module.customer.erp_model.customerManage.mapper.ErpInoutunitcontactMapper;
import com.xjrsoft.module.customer.erp_model.customerManage.dto.ErpInoutunitListDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xjrsoft.common.page.ConventPage;
import com.xjrsoft.common.page.PageOutput;
import java.util.List;
import com.xjrsoft.module.customer.erp_model.customerManage.mapper.ErpInoutunitMapper;
import com.xjrsoft.module.customer.erp_model.customerManage.service.IErpInoutunitService;
import com.xjrsoft.core.mp.base.BaseService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;

/**
 *  服务实现类
 *
 * @author pp
 * @since 2021-09-23
 */
@Service
@AllArgsConstructor
public class ErpInoutunitServiceImpl extends BaseService<ErpInoutunitMapper, ErpInoutunit> implements IErpInoutunitService {

	private ErpInoutunitcontactMapper erpInoutunitcontactMapper;

	@Override
	public IPage<ErpInoutunit> getPageList(ErpInoutunitListDto pageListDto) {
		Wrapper<ErpInoutunit> wrapper = Wrappers.<ErpInoutunit>query().lambda()
				.like(!StringUtil.isEmpty(pageListDto.getF_EnCode()), ErpInoutunit::getFEncode, pageListDto.getF_EnCode())
				.eq(ErpInoutunit::getFUnitype,"2")
				.like(!StringUtil.isEmpty(pageListDto.getF_FullName()), ErpInoutunit::getFFullname, pageListDto.getF_FullName());
		return this.page(ConventPage.getPage(pageListDto), wrapper);
	}

	@Override
	public String addErpInoutunit(ErpInoutunit erpInoutunit, List<ErpInoutunitcontact> erpInoutunitcontactList) {
		String erpInoutunitId = IdWorker.get32UUID();
		erpInoutunit.setFId(erpInoutunitId);
		erpInoutunitcontactList.forEach(erpInoutunitcontact -> erpInoutunitcontact.setFInoutunitid(erpInoutunitId));
		this.saveBatch(erpInoutunitcontactList, ErpInoutunitcontact.class, ErpInoutunitcontactMapper.class);
		boolean isSuccess = this.save(erpInoutunit);
		return isSuccess ? erpInoutunitId : null;
	}

	@Override
	public boolean updateErpInoutunit(String id, ErpInoutunit erpInoutunit, List<ErpInoutunitcontact> erpInoutunitcontactList) {
		erpInoutunit.setFId(id);
		erpInoutunitcontactList.forEach(erpInoutunitcontact -> erpInoutunitcontact.setFInoutunitid(id));
		erpInoutunitcontactMapper.delete(Wrappers.<ErpInoutunitcontact>query().lambda().eq(ErpInoutunitcontact::getFInoutunitid, id));
		this.saveBatch(erpInoutunitcontactList, ErpInoutunitcontact.class, ErpInoutunitcontactMapper.class);
		return this.updateById(erpInoutunit);
	}

	public List<ErpInoutunitcontact> getErpInoutunitcontactByParentId(String parentId){
		Wrapper wrapper = Wrappers.<ErpInoutunitcontact>query().lambda().eq(ErpInoutunitcontact::getFInoutunitid, parentId);
		return erpInoutunitcontactMapper.selectList(wrapper);
	}
}
